package edu.nf.bs.controller;

import com.github.pagehelper.PageInfo;
import edu.nf.bs.vo.ResultVO;


import java.util.List;

/**
 * 抽象出来的父类 把公共的代码放在父类当中
 * 该类主要拿来与前端交互
 */
public class BaseContraller {
    /**
     * 服务于分页查询
     * @param pageInfo  分页实例 里面包含了一些分页的信息
     * @param <T> 泛型 ：指的是给哪个查询出来的数据分页
     *           例如PageInfo<List<User>> pageinfo
     *           这里面就包含了user的分页信息 一般数据太少的情况不会使用分页
     * @return
     */
    protected <T> ResultVO<List<T>> page(PageInfo<T> pageInfo){
        ResultVO<List<T>> vo=new ResultVO<>();
        //code.setCode(0)layui认为0就是成功
        vo.setCode(0);
        //给resultVO设置总记录数
        vo.setCount(pageInfo.getTotal());
        //获取数据
        vo.setData(pageInfo.getList());
        return vo;
    }
    protected ResultVO success(){
        ResultVO vo=new ResultVO();
        //code.setCode(0)layui认为0就是成功
        vo.setCode(200);
        return vo;
    }

    /***
     * 成功响应方法
     * @param data 响应的数据
     * @param <T>
     * @return
     */
    protected <T> ResultVO<T> success(T data){
        ResultVO<T> vo=new ResultVO<>();
        //200表示成功响应
        vo.setCode(200);
        vo.setData(data);
        return vo;
    }

    /**
     *
     * @param code 响应状态码
     * @param msg 响应消息
     * @return
     */
    protected ResultVO fail(int code,String msg){
        ResultVO vo=new ResultVO();
        vo.setCode(code);
        vo.setMsg(msg);
        return vo;
    }

}
